/** layui-v2.5.7 MIT License */ ;
layui.define("form", function(e) {
	"use strict";
	var i = layui.$,
		a = layui.form,
		n = layui.layer,
		t = "tree",
		r = {
			config: {},
			index: layui[t] ? layui[t].index + 1e4 : 0,
			set: function(e) {
				var a = this;
				return a.config = i.extend({}, a.config, e), a
			},
			on: function(e, i) {
				return layui.onevent.call(this, t, e, i)
			}
		},
		l = function() {
			var e = this,
				i = e.config,
				a = i.id || e.index;
			return l.that[a] = e, l.config[a] = i, {
				config: i,
				reload: function(i) {
					e.reload.call(e, i)
				},
				getChecked: function() {
					return e.getChecked.call(e)
				},
				setChecked: function(i) {
					return e.setChecked.call(e, i)
				},
				qxChecked: function() {
					return e.getChecked.call(e)
				}
			}
		},
		c = "layui-hide",
		d = "layui-disabled",
		s = "layui-tree-set",
		o = "layui-tree-iconClick",
		h = "layui-icon-addition",
		u = "layui-icon-subtraction",
		p = "layui-tree-entry",
		f = "layui-tree-main",
		y = "layui-tree-txt",
		v = "layui-tree-pack",
		C = "layui-tree-spread",
		k = "layui-tree-setLineShort",
		m = "layui-tree-showLine",
		x = "layui-tree-lineExtend",
		b = function(e) {
			var a = this;
			a.index = ++r.index, a.config = i.extend({}, a.config, r.config, e), a.render()
		};
	b.prototype.config = {
		data: [],
		showCheckbox: !1,
		showLine: !0,
		accordion: !1,
		onlyIconControl: !1,
		isJump: !1,
		edit: !1,
		text: {
			defaultNodeName: "未命名",
			none: "无数据"
		}
	}, b.prototype.reload = function(e) {
		var a = this;
		layui.each(e, function(e, i) {
			i.constructor === Array && delete a.config[e]
		}), a.config = i.extend(!0, {}, a.config, e), a.render()
	}, b.prototype.render = function() {
		var e = this,
			a = e.config;
		e.checkids = [];
		var n = i('<div class="layui-tree' + (a.showCheckbox ? " layui-form" : "") + (a.showLine ?
			" layui-tree-line" : "") + '" lay-filter="LAY-tree-' + e.index + '"></div>');
		e.tree(n);
		var t = a.elem = i(a.elem);
		if (t[0]) {
			if (e.key = a.id || e.index, e.elem = n, e.elemNone = i('<div class="layui-tree-emptyText">' + a
					.text.none + "</div>"), t.html(e.elem), 0 == e.elem.find(".layui-tree-set").length)
				return e.elem.append(e.elemNone);
			a.showCheckbox && e.renderForm("checkbox"), e.elem.find(".layui-tree-set").each(function() {
				var e = i(this);
				e.parent(".layui-tree-pack")[0] || e.addClass("layui-tree-setHide"), !e.next()[0] &&
					e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend") && e
					.addClass(k), e.next()[0] || e.parents(".layui-tree-set").eq(0).next()[0] || e
					.addClass(k)
			}), e.events()
		}
	}, b.prototype.renderForm = function(e) {
		a.render(e, "LAY-tree-" + this.index)
	}, b.prototype.tree = function(e, a) {
		var n = this,
			t = n.config,
			r = a || t.data;
		layui.each(r, function(a, r) {
			var l = r.children && r.children.length > 0,
				o = i('<div class="layui-tree-pack" ' + (r.spread ? 'style="display: block;"' :
					"") + "></div>"),
				h = i(['<div data-id="' + r.id + '" class="layui-tree-set' + (r.spread ?
						" layui-tree-spread" : "") + (r.checked ? " layui-tree-checkedFirst" :
						"") + '">', '<div class="layui-tree-entry">',
					'<div class="layui-tree-main">',
					function() {
						return t.showLine ? l ?
							'<span class="layui-tree-iconClick layui-tree-icon"><i class="layui-icon ' +
							(r.spread ? "layui-icon-subtraction" : "layui-icon-addition") +
							'"></i></span>' :
							'<span class="layui-tree-iconClick"><i class="layui-icon layui-icon-file"></i></span>' :
							'<span class="layui-tree-iconClick"><i class="layui-tree-iconArrow ' +
							(l ? "" : c) + '"></i></span>'
					}(),
					function() {
						return t.showCheckbox ? '<input type="checkbox" name="' + (r.field ||
								"layuiTreeCheck_" + r.id) +
							'" same="layuiTreeCheck" lay-skin="primary" ' + (r.disabled ?
								"disabled" : "") + ' value="' + r.id + '">' : ""
					}(),
					function() {
						return t.isJump && r.href ? '<a href="' + r.href +
							'" class="' + y + '">' + (r.title || r.label || t
								.text.defaultNodeName) + "</a>" : '<span class="' + y + (r
								.disabled ? " " + d : "") + '">' + (r.title || r.label || t.text
								.defaultNodeName) + "</span>"
					}(), "</div>",
					function() {
						if (!t.edit) return "";
						var e = {
								add: '<i class="layui-icon layui-icon-add-1"  data-type="add"></i>',
								update: '<i class="layui-icon layui-icon-edit" data-type="update"></i>',
								del: '<i class="layui-icon layui-icon-delete" data-type="del"></i>'
							},
							i = ['<div class="layui-btn-group layui-tree-btnGroup">'];
						return t.edit === !0 && (t.edit = ["update", "del"]), "object" ==
							typeof t.edit ? (layui.each(t.edit, function(a, n) {
								i.push(e[n] || "")
							}), i.join("") + "</div>") : void 0
					}(), "</div></div>"
				].join(""));
			l && (h.append(o), n.tree(o, r.children)), e.append(h), h.prev("." + s)[0] && h.prev()
				.children(".layui-tree-pack").addClass("layui-tree-showLine"), l || h.parent(
					".layui-tree-pack").addClass("layui-tree-lineExtend"), n.spread(h, r), t
				.showCheckbox && (r.checked && n.checkids.push(r.id), n.checkClick(h, r)), t.edit &&
				n.operate(h, r)
		})
	}, b.prototype.spread = function(e, a) {
		var n = this,
			t = n.config,
			r = e.children("." + p),
			l = r.children("." + f),
			c = r.find("." + o),
			k = r.find("." + y),
			m = t.onlyIconControl ? c : l,
			x = "";
		m.on("click", function(i) {
			var a = e.children("." + v),
				n = m.children(".layui-icon")[0] ? m.children(".layui-icon") : m.find(
					".layui-tree-icon").children(".layui-icon");
			if (a[0]) {
				if (e.hasClass(C)) e.removeClass(C), a.slideUp(200), n.removeClass(u).addClass(h);
				else if (e.addClass(C), a.slideDown(200), n.addClass(u).removeClass(h), t
					.accordion) {
					var r = e.siblings("." + s);
					r.removeClass(C), r.children("." + v).slideUp(200), r.find(".layui-tree-icon")
						.children(".layui-icon").removeClass(u).addClass(h)
				}
			} else x = "normal"
		}), k.on("click", function() {
			var n = i(this);
			n.hasClass(d) || (x = e.hasClass(C) ? t.onlyIconControl ? "open" : "close" : t
				.onlyIconControl ? "close" : "open", t.click && t.click({
					elem: e,
					state: x,
					data: a
				}))
		})
	}, b.prototype.setCheckbox = function(e, i, a) {
		var n = this,
			t = (n.config, a.prop("checked"));
		if (!a.prop("disabled")) {
			if ("object" == typeof i.children || e.find("." + v)[0]) {
				var r = e.find("." + v).find('input[same="layuiTreeCheck"]');
				r.each(function() {
					this.disabled || (this.checked = t)
				})
			}
			var l = function(e) {
				if (e.parents("." + s)[0]) {
					var i, a = e.parent("." + v),
						n = a.parent(),
						r = a.prev().find('input[same="layuiTreeCheck"]');
					t ? r.prop("checked", t) : (a.find('input[same="layuiTreeCheck"]').each(function() {
						this.checked && (i = !0)
					}), i || r.prop("checked", !1)), l(n)
				}
			};
			l(e), n.renderForm("checkbox")
		}
	}, b.prototype.checkClick = function(e, a) {
		var n = this,
			t = n.config,
			r = e.children("." + p),
			l = r.children("." + f);
		l.on("click", 'input[same="layuiTreeCheck"]+', function(r) {
			layui.stope(r);
			var l = i(this).prev(),
				c = l.prop("checked");
			l.prop("disabled") || (n.setCheckbox(e, a, l), t.oncheck && t.oncheck({
				elem: e,
				checked: c,
				data: a
			}))
		})
	}, b.prototype.operate = function(e, a) {
		var t = this,
			r = t.config,
			l = e.children("." + p),
			d = l.children("." + f);
		l.children(".layui-tree-btnGroup").on("click", ".layui-icon", function(l) {
			layui.stope(l);
			var f = i(this).data("type"),
				b = e.children("." + v),
				g = {
					data: a,
					type: f,
					elem: e
				};
			if ("add" == f) {
				b[0] || (r.showLine ? (d.find("." + o).addClass("layui-tree-icon"), d.find("." + o)
						.children(".layui-icon").addClass(h).removeClass("layui-icon-file")) : d
					.find(".layui-tree-iconArrow").removeClass(c), e.append(
						'<div class="layui-tree-pack"></div>'));
				var w = r.operate && r.operate(g),
					N = {};
				if (N.title = r.text.defaultNodeName, N.id = w, t.tree(e.children("." + v), [N]), r
					.showLine)
					if (b[0]) b.hasClass(x) || b.addClass(x), e.find("." + v).each(function() {
							i(this).children("." + s).last().addClass(k)
						}), b.children("." + s).last().prev().hasClass(k) ? b.children("." + s)
						.last().prev().removeClass(k) : b.children("." + s).last().removeClass(k), !
						e.parent("." + v)[0] && e.next()[0] && b.children("." + s).last()
						.removeClass(k);
					else {
						var T = e.siblings("." + s),
							L = 1,
							A = e.parent("." + v);
						layui.each(T, function(e, a) {
								i(a).children("." + v)[0] || (L = 0)
							}), 1 == L ? (T.children("." + v).addClass(m), T.children("." + v)
								.children("." + s).removeClass(k), e.children("." + v).addClass(m),
								A.removeClass(x), A.children("." + s).last().children("." + v)
								.children("." + s).last().addClass(k)) : e.children("." + v)
							.children("." + s).addClass(k)
					} if (!r.showCheckbox) return;
				if (d.find('input[same="layuiTreeCheck"]')[0].checked) {
					var I = e.children("." + v).children("." + s).last();
					I.find('input[same="layuiTreeCheck"]')[0].checked = !0
				}
				t.renderForm("checkbox")
			} else if ("update" == f) {
				var F = d.children("." + y).html();
				d.children("." + y).html(""), d.append(
					'<input type="text" class="layui-tree-editInput">'), d.children(
					".layui-tree-editInput").val(F).focus();
				var j = function(e) {
					var i = e.val().trim();
					i = i ? i : r.text.defaultNodeName, e.remove(), d.children("." + y).html(i),
						g.data.title = i, r.operate && r.operate(g)
				};
				d.children(".layui-tree-editInput").blur(function() {
					j(i(this))
				}), d.children(".layui-tree-editInput").on("keydown", function(e) {
					13 === e.keyCode && (e.preventDefault(), j(i(this)))
				})
			} else n.confirm('确认删除该节点 "<span style="color: #999;">' + (a.title || "") +
				'</span>" 吗？',
				function(a) {
					if (r.operate && r.operate(g), g.status = "remove", n.close(a), !e.prev(
							"." + s)[0] && !e.next("." + s)[0] && !e.parent("." + v)[0])
					return e.remove(), void t.elem.append(t.elemNone);
					if (e.siblings("." + s).children("." + p)[0]) {
						if (r.showCheckbox) {
							var l = function(e) {
								if (e.parents("." + s)[0]) {
									var a = e.siblings("." + s).children("." + p),
										n = e.parent("." + v).prev(),
										r = n.find('input[same="layuiTreeCheck"]')[0],
										c = 1,
										d = 0;
									0 == r.checked && (a.each(function(e, a) {
										var n = i(a).find(
											'input[same="layuiTreeCheck"]')[
											0];
										0 != n.checked || n.disabled || (c = 0),
											n.disabled || (d = 1)
									}), 1 == c && 1 == d && (r.checked = !0, t
										.renderForm("checkbox"), l(n.parent("." +
											s))))
								}
							};
							l(e)
						}
						if (r.showLine) {
							var d = e.siblings("." + s),
								h = 1,
								f = e.parent("." + v);
							layui.each(d, function(e, a) {
									i(a).children("." + v)[0] || (h = 0)
								}), 1 == h ? (b[0] || (f.removeClass(x), d.children("." + v)
										.addClass(m), d.children("." + v).children("." + s)
										.removeClass(k)), e.next()[0] ? f.children("." + s)
									.last().children("." + v).children("." + s).last().addClass(
										k) : e.prev().children("." + v).children("." + s).last()
									.addClass(k), e.next()[0] || e.parents("." + s)[1] || e
									.parents("." + s).eq(0).next()[0] || e.prev("." + s)
									.addClass(k)) : !e.next()[0] && e.hasClass(k) && e.prev()
								.addClass(k)
						}
					} else {
						var y = e.parent("." + v).prev();
						if (r.showLine) {
							y.find("." + o).removeClass("layui-tree-icon"), y.find("." + o)
								.children(".layui-icon").removeClass(u).addClass(
									"layui-icon-file");
							var w = y.parents("." + v).eq(0);
							w.addClass(x), w.children("." + s).each(function() {
								i(this).children("." + v).children("." + s).last()
									.addClass(k)
							})
						} else y.find(".layui-tree-iconArrow").addClass(c);
						e.parents("." + s).eq(0).removeClass(C), e.parent("." + v).remove()
					}
					e.remove()
				})
		})
	}, b.prototype.events = function() {
		var e = this,
			a = e.config;
		e.elem.find(".layui-tree-checkedFirst");
		e.setChecked(e.checkids), e.elem.find(".layui-tree-search").on("keyup", function() {
			var n = i(this),
				t = n.val(),
				r = n.nextAll(),
				l = [];
			r.find("." + y).each(function() {
					var e = i(this).parents("." + p);
					if (i(this).html().indexOf(t) != -1) {
						l.push(i(this).parent());
						var a = function(e) {
							e.addClass("layui-tree-searchShow"), e.parent("." + v)[0] && a(e
								.parent("." + v).parent("." + s))
						};
						a(e.parent("." + s))
					}
				}), r.find("." + p).each(function() {
					var e = i(this).parent("." + s);
					e.hasClass("layui-tree-searchShow") || e.addClass(c)
				}), 0 == r.find(".layui-tree-searchShow").length && e.elem.append(e.elemNone), a
				.onsearch && a.onsearch({
					elem: l
				})
		}), e.elem.find(".layui-tree-search").on("keydown", function() {
			i(this).nextAll().find("." + p).each(function() {
				var e = i(this).parent("." + s);
				e.removeClass("layui-tree-searchShow " + c)
			}), i(".layui-tree-emptyText")[0] && i(".layui-tree-emptyText").remove()
		})
	}, b.prototype.getChecked = function() {
		var e = this,
			a = e.config,
			n = [],
			t = [];
		e.elem.find(".layui-form-checked").each(function() {
			n.push(i(this).prev()[0].value)
		});
		var r = function(e, a) {
			layui.each(e, function(e, t) {
				layui.each(n, function(e, n) {
					if (t.id == n) {
						var l = i.extend({}, t);
						return delete l.children, a.push(l), t.children && (l
							.children = [], r(t.children, l.children)), !0
					}
				})
			})
		};
		return r(i.extend({}, a.data), t), t
	}, b.prototype.setChecked = function(e) {
		var a = this;
		a.config;
		a.elem.find("." + s).each(function(a, n) {
			var t = i(this).data("id"),
				r = i(n).children("." + p).find('input[same="layuiTreeCheck"]'),
				l = r.next();
			if ("number" == typeof e) {
				if (t == e) return r[0].checked || l.click(), !1
			} else "object" == typeof e && layui.each(e, function(e, i) {
				if (i == t && !r[0].checked) return l.click(), !0
			})
		})
	}, b.prototype.qxChecked = function(){
		var a = this;
		a.elem.find('.'+ s).each(function(a, n){
		    var thisId = i(this).data('id')
		        ,input = i(n).children('.'+p).find('input[same="layuiTreeCheck"]')
		        ,reInput = input.next();
		    if(input[0].checked){
		        reInput.click();
		    }
		});
	}, l.that = {}, l.config = {}, r.reload = function(e, i) {
		var a = l.that[e];
		return a.reload(i), l.call(a)
	}, r.getChecked = function(e) {
		var i = l.that[e];
		return i.getChecked()
	}, r.setChecked = function(e, i) {
		var a = l.that[e];
		return a.setChecked(i)
	},r.qxChecked = function(e){
		var i = l.that[e];
		return i.qxChecked();
	}, r.render = function(e) {
		var i = new b(e);
		return l.call(i)
	}, e(t, r)
});
